package com.android.djlmapp.activity.login;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.android.djlmapp.R;
import com.android.djlmapp.adapter.home.GuidePageAdapter;
import com.android.djlmapp.tools.global.ConstantsValue;
import com.android.djlmapp.tools.global.PrefUtils;
import com.gyf.barlibrary.ImmersionBar;

import java.util.ArrayList;
import java.util.List;

/**
 * 实现首次启动的引导页面
 */
public class GuidePageActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {

    private ViewPager vp;

    private int[] imageIdArray;//图片资源的数组

    private List<View> viewList;//图片资源的集合

    private ViewGroup vg;//放置圆点

    //实例化原点View
    private ImageView iv_point;

    private ImageView[] ivPointArray;

    //最后一页的按钮
    private Button ib_start;

    //跳过
    private Button skip_btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (!isTaskRoot()) {
            finish();
            return;
        }
        setContentView(R.layout.activity_guide_page);
        ImmersionBar.with(this)
                .transparentBar()
                .init();
        initView();
    }

    protected void initView() {
        //是否第一次进入
        boolean isFirst = PrefUtils.getBoolean(ConstantsValue.KEY_FIRST_LAUNCH, true);
        if (isFirst) {

            //加载ViewPager
            initViewPager();

            //加载底部圆点
            initPoint();

            ib_start = (Button) findViewById(R.id.guide_ib_start);

            ib_start.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    PrefUtils.putBoolean(ConstantsValue.KEY_FIRST_LAUNCH, false);
                    startActivity(new Intent(GuidePageActivity.this, LoginActivity.class));
                    finish();
                }
            });

            //跳过
            skip_btn = (Button) findViewById(R.id.guide_skip_btn);

            skip_btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    PrefUtils.putBoolean(ConstantsValue.KEY_FIRST_LAUNCH, false);
                    startActivity(new Intent(GuidePageActivity.this, LoginActivity.class));
                    finish();
                }
            });

        } else {
            Intent i = new Intent(this, SplashActivity.class);

            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            startActivity(i);

            finish();
        }
    }



    /**
     * 加载底部圆点
     */

    private void initPoint() {

        //这里实例化LinearLayout

        vg = (ViewGroup) findViewById(R.id.guide_ll_point);

        //根据ViewPager的item数量实例化数组

        ivPointArray = new ImageView[viewList.size()];

        //循环新建底部圆点ImageView，将生成的ImageView保存到数组中

        int size = viewList.size();
        for (int i = 0; i < size; i++) {
            iv_point = new ImageView(this);

            iv_point.setImageResource(R.mipmap.pointb);
            // 初始化布局参数
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            if (i != 0) {
                params.setMargins(15, 0, 0, 0);
            }
            iv_point.setLayoutParams(params);

            ivPointArray[i] = iv_point;
            //第一个页面需要设置为选中状态，这里采用两张不同的图片

            if (i == 0) {
                iv_point.setBackgroundResource(R.drawable.guide_page_unselect);

            } else {
                iv_point.setBackgroundResource(R.drawable.guide_page_select);
            }
            //将数组中的ImageView加入到ViewGroup
            vg.addView(ivPointArray[i]);

        }
    }

    /**
     * 加载图片ViewPager
     */
    private void initViewPager() {
        vp = (ViewPager) findViewById(R.id.guide_vp);
        //实例化图片资源
        imageIdArray = new int[]{R.mipmap.guide1, R.mipmap.guide2, R.mipmap.guide3};
        viewList = new ArrayList<>();
        //获取一个Layout参数，设置为全屏
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        //循环创建View并加入到集合中
        int len = imageIdArray.length;
        for (int i = 0; i < len; i++) {
            //new ImageView并设置全屏和图片资源
            ImageView imageView = new ImageView(this);
            imageView.setLayoutParams(params);
            imageView.setBackgroundResource(imageIdArray[i]);
            //将ImageView加入到集合中
            viewList.add(imageView);
        }
        //View集合初始化好后，设置Adapter
        vp.setAdapter(new GuidePageAdapter(viewList));
        //设置滑动监听
        vp.setOnPageChangeListener(this);
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    /**
     * 滑动后的监听
     *
     * @param position
     */
    @Override
    public void onPageSelected(int position) {
//        循环设置当前页的标记图
        int length = imageIdArray.length;
        for (int i = 0; i < length; i++) {
            ivPointArray[position].setBackgroundResource(R.drawable.guide_page_unselect);
            if (position != i) {
                ivPointArray[i].setBackgroundResource(R.drawable.guide_page_select);
            }
        }

        //判断是否是最后一页，若是则显示按钮
        if (position == imageIdArray.length - 1) {
            ib_start.setVisibility(View.VISIBLE);
            vg.setVisibility(View.GONE);
        } else {
            ib_start.setVisibility(View.GONE);
            vg.setVisibility(View.VISIBLE);
        }
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ImmersionBar.with(this).destroy();
    }
}